Multi language editor

ABSTRACT

The claimed subject matter provides a system and/or method that facilitates creating a portion of an industrial process. An interface component can receive a first portion of data associated with a first programming language and a second portion of data associated with a second programming language, wherein the first programming language is independent and disparate of the second programming language. An editor component can create at least one of a portion of an industrial process or a portion of a mixed language object by enabling the combination of the first portion of data and the second portion of data independent of the respective programming languages.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.12/242,659, filed on Sep. 30, 2008, and entitled “MULTI LANGUAGEEDITOR,” the entirety of which is incorporated herein by reference.

TECHNICAL FIELD

The subject invention relates to industrial control systems and, moreparticularly, to utilizing multiple programming languages to create anindustrial process.

BACKGROUND

Due to advances in computing technology, businesses today are able tooperate more efficiently when compared to substantially similarbusinesses only a few years ago. For example, internal networkingenables employees of a company to communicate instantaneously by email,quickly transfer data files to disparate employees, manipulate datafiles, share data relevant to a project to reduce duplications in workproduct, etc. Furthermore, advancements in technology have enabledfactory applications to become partially or completely automated. Forinstance, operations that once required workers to put themselvesproximate to heavy machinery and other various hazardous conditions cannow be completed at a safe distance therefrom.

Further, imperfections associated with human action have been minimizedthrough employment of highly precise machines. Many of these factorydevices supply data related to manufacturing to databases that areaccessible by system/process/project managers on a factory floor. Forinstance, sensors and associated software can detect a number ofinstances that a particular machine has completed an operation given adefined amount of time. Further, data from sensors can be delivered to aprocessing unit relating to system alarms. Thus, a factory automationsystem can review collected data and automatically and/orsemi-automatically schedule maintenance of a device, replacement of adevice, and other various procedures that relate to automating aprocess.

While various advancements have been made with respect to automating anindustrial process, utilization and design of controllers have beenlargely unchanged. In more detail, industrial controllers have beendesigned to efficiently undertake real-time control. For instance,conventional industrial controllers receive data from sensors and, basedupon the received data, control an actuator, drive, or the like. Thesecontrollers recognize a source and/or destination of the data by way ofa symbol and/or address associated with source and/or destination. Moreparticularly, industrial controllers include communications ports and/oradaptors, and sensors, actuators, drives, and the like arecommunicatively coupled to such ports/adaptors. Thus, a controller canrecognize device identity when data is received and further delivercontrol data to an appropriate device.

Unfortunately, traditional controllers and devices employed withinautomation industrial environments have fallen behind recenttechnological advances to which the automation industry has maintainedstride for stride. Conventional controllers and devices are rigid andinflexible such that software associated therewith must be specificallytailored and/or programmed. In other words, each controller and/ordevice typically requires specific code or software in order to beutilized within an industrial process. Moreover, within the industrialautomation industry, various programming languages exits and can beimplemented to create and employ such processes. Adding to thecomplexity of programming controllers and devices is the inherentbenefits and detriments of each programming language, wherein developersmust choose among programming languages in order to create processes.Furthermore, mixing languages within a given platform can be a realproblem when large applications or processes are constructed.

SUMMARY

The following presents a simplified summary of the claimed subjectmatter in order to provide a basic understanding of some aspectsdescribed herein. This summary is not an extensive overview, and is notintended to identify key/critical elements or to delineate the scope ofthe claimed subject matter. Its sole purpose is to present some conceptsin a simplified form as a prelude to the more detailed description thatis presented later.

The subject innovation relates to systems and/or methods that facilitateemploying two or more programming languages associated with a standardin order to generate a mixed language object. An editor component canallow a user to define shapes which create an underlying controlsolution. Thus, the shapes can operate as a macro function that can be acollection of other functions that have been selected to define aparticular control solution. In general, the editor component can enablethe employment of various programming languages in order to create aportion of a process independent of each programming languageproperties, characteristics, and the like. The editor component canallow the use of a stencil with respective shapes (e.g., a shape can bean object defined by at least one of a function or a method), whereinthe stencil allows drag-and-drop of a shape to create a portion of aprocess. Such shapes can be of various programming languages. Moreover,the editor component can enable the creation of custom stencils withshapes and/or custom languages based on the combination of two or moreprogramming languages. The editor component can further provide theability to change display types, (e.g., windows style: Details, Iconswith tool tips . . . ), support Drag and Drop, provide Scalable Panes,allow sorting each icon by their name, where each stencil can have itsown Container Shape, import new stencils based on library hardware(XML), and allow OEMs to create their own stencils with their ownshapes, for example.

To the accomplishment of the foregoing and related ends, certainillustrative aspects of the invention are described herein in connectionwith the following description and the annexed drawings. These aspectsare indicative, however, of but a few of the various ways in which theprinciples of the invention can be employed and the subject invention isintended to include all such aspects and their equivalents. Otheradvantages and novel features of the invention will become apparent fromthe following detailed description of the invention when considered inconjunction with the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of an exemplary system thatfacilitates employing two or more programming languages associated witha standard in order to generate a mixed language object.

FIG. 2 illustrates a block diagram of an exemplary system thatfacilitates creating mixed language documents and/or objects.

FIG. 3 illustrates a block diagram of an exemplary system thatfacilitates utilizing disparate industrial programming languages togenerate graphical files and/or textured files (e.g., program files).

FIG. 4 illustrates a block diagram of an exemplary system thatfacilitates enabling universal and seamless importation of data from aplurality of disparate sources.

FIG. 5 illustrates a block diagram of an exemplary system thatfacilitates utilizing a universal model in accordance with the subjectinnovation.

FIG. 6 illustrates a block diagram of an exemplary system thatfacilitates employing two or more programming languages associated witha standard in order to generate a mixed language object.

FIG. 7 illustrates an exemplary methodology for utilizing disparateindustrial programming languages within a program in order to generate aportion of an industrial process.

FIG. 8 illustrates an exemplary methodology that facilitates seamlessinteraction from a first industrial programming language and a secondindustrial programming language within an editor component.

FIG. 9 illustrates an exemplary networking environment, wherein thenovel aspects of the claimed subject matter can be employed.

FIG. 10 illustrates an exemplary operating environment that can beemployed in accordance with the claimed subject matter.

DETAILED DESCRIPTION

The claimed subject matter is now described with reference to thedrawings, wherein like reference numerals are used to refer to likeelements throughout. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the claimed subject matter. It may beevident, however, that such matter can be practiced without thesespecific details. In other instances, well-known structures and devicesare shown in block diagram form in order to facilitate describing theinvention.

As used in this application, the terms “component,” “system,” “editor,”“document,” “panel,” “interface,” “builder,” and the like are intendedto refer to a computer-related entity, either hardware, a combination ofhardware and software, software, or software in execution. For example,a component may be, but is not limited to being, a process running on aprocessor, a processor, an object, an instance, an executable, a threadof execution, a program, and/or a computer. By way of illustration, bothan application running on a computer and the computer can be acomponent. One or more components may reside within a process and/orthread of execution and a component may be localized on one computerand/or distributed between two or more computers.

Furthermore, the claimed subject matter may be implemented as a method,apparatus, or article of manufacture using standard programming and/orengineering techniques to produce software, firmware, hardware, or anycombination thereof to control a computer to implement the disclosedsubject matter. The term “article of manufacture” as used herein isintended to encompass a computer program accessible from anycomputer-readable device, carrier, or media. For example, computerreadable media can include but are not limited to magnetic storagedevices (e.g., hard disk, floppy disk, magnetic strips . . . ), opticaldisks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ),smart cards, and flash memory devices (e.g., card, stick, key drive . .. ). Additionally it should be appreciated that a carrier wave can beemployed to carry computer-readable electronic data such as those usedin transmitting and receiving electronic mail or in accessing a networksuch as the Internet or a local area network (LAN). Of course, thoseskilled in the art will recognize many modifications may be made to thisconfiguration without departing from the scope or spirit of the claimedsubject matter. Moreover, the word “exemplary” is used herein to meanserving as an example, instance, or illustration. Any aspect or designdescribed herein as “exemplary” is not necessarily to be construed aspreferred or advantageous over other aspects or designs.

Turning now to the drawings, FIG. 1 illustrates a system 100 thatfacilitates employing two or more programming languages associated witha standard in order to generate a mixed language object. The system 100can include an editor component 102 that can receive a two or morelanguages 104 in order to create a mixed language object 106 that can beemployed as a portion of an industrial process. Typically, editors,programs, applications, compilers, and the like are capable of utilizinga single programming language for the generation of industrialprocesses. However, the editor component 102 can provide an environmentfor the implementation of a process with the combination of variousprogramming languages associated with a standard. For example, thestandard can be the IEC61131 Standard, the IEC61499 Standard, etc.Moreover, the editor component 102 can enable a first industrialprogramming language and a second industrial programming language toreside within a document (e.g., described and defined in more detailbelow) as well as enable the first industrial programming language andthe second industrial programming language to interact with one another(e.g., programming languages share a set of common variables that can beaccessed).

The editor component 102 can receive any suitable portion of data,wherein the portion of data can be defined in a programming languagerelated to a standard in connection with an industrial environment. Inparticular, the editor component 102 can receive the portion of data viaan interface component 108 (herein referred to as “the interface 108”).Moreover, the editor component 102 can receive data from the two or morelanguages 104, wherein there can be any suitable number of languagessuch as language₁ to language_(N), where N is a positive integer. Byenabling the combination of the two or more languages, the editorcomponent 102 can employ a language that is more beneficial for aportion of a process (e.g., a loop is difficult to be implemented in agraphical language, etc.). Furthermore, the visualization of a processcan be more simplified by the editor component 102.

In general, the editor component 102 can provide a unique ability to mixtwo or more languages 104 in which a first language can be a graphicallanguage and a second language can be a textual language. In otherwords, the editor component 102 can enable the combination of agraphical language and a textual language in order to create and/ormodify an industrial process. For example, the language can be, but isnot limited to being, a ladder diagram, a function block diagram, astructured text, an instruction list, a sequential function chart,61499, any suitable programming language associated with a standard, anysuitable programming language associated with an industrial process,etc.

In accordance with another aspect of the subject innovation, the editorcomponent 102 can enable the creation of new languages based upon theunique combinations of the two or more languages 104. For example, auser can be combine a first graphical language and a second textuallanguage to his or her liking, where such unique combination can beutilized as a user-defined programming language for an industrialprocess.

Moreover, the system 100 can include any suitable and/or necessaryinterface 108, which provides various adapters, connectors, channels,communication paths, etc. to integrate the editor component 102 intovirtually any operating and/or database system(s). In addition, theinterface 108 can provide various adapters, connectors, channels,communication paths, etc., that provide for interaction with the editorcomponent 102.

FIG. 2 illustrates a system 200 that facilitates creating mixed languagedocuments and/or objects. The system 200 can include a stencil editorcomponent 202, a panel component 204, and a document 206. It is to beappreciated that the editor component (not shown) can include at leastone of the stencil editor component 202, the panel component 204, and/orthe document 206. Typically, mixing languages can be difficult inconnection with building large applications. The subject innovation canavoid this by providing a structured and well defined programorganization units (POUs) document. The subject innovation can enablethe POU document to be separated into a different container. Such POUcontainers (e.g., also referred to as POU sections) can be specific toone or several languages (e.g., containers for ST language only and FBDlanguage for all custom graphical language). A POU document can becomposed of one or several POU containers.

The subject innovation can allow the creation of custom “Shapes” for aspecific language that could be included inside FBD containers. Forexample, there are thousand of libraries that can be created and canallow coverage of many different markets such as Electrical andautomation dedicated for specifications. The subject innovation canfurther provide an extremely powerful editor dedicated to automationmarket, but extensible to any market. Table 1 (below) can providevarious definitions as utilized in the subject innovation:

TABLE 1 Other possible Term Definition definition MLGE Multi languageeditor Editors, (also referred to as the editor component editorcomponent 102). Editor that will support several language within thesame page MLGE Document Windows control (can be Document docked ortabbed) that will contain all language containers. MLGE Panel WindowsControl that Stencils Panel, panel display stencil component MLGE FrameMLGE Frame that will Editor Frame include several IEC container or HMIcontainers IEC Container Receptacle that include POU Section IEClanguage rules, graphical rules. Stencil Stencil is a group of Stencil,stencil editor Shape component Shape Object defined by method, Objectdebug properties and interface

The editor component (not shown but discussed previously in FIG. 1) canbe segmented into the stencil editor component 202, the panel component204, and the document 206. The panel component 204 can be a containerfor stencils. The document 206 can be the container for POU body. Thestencil editor component 202 can be a tool and/or application utilizedto create a new object or shape for a stencil.

For example, the panel component 204 can be based on a tool box style oremail application style. The display type can be changed (e.g., windowstyle, details, icons with tool tips, etc.). The panel component 204 canfurther support drag and drop features as well as select and clickfeatures. It is to be appreciated that the stencil can also be organizedby a user. In addition, the panel component 204 can be scalable (e.g.,stencil can be displayed or not, etc.). Within a stencil, icons can besorted by their name, as well as allowing a default position to berestored. Each stencil can have its own container shape. A customstencil and shape can use the FBD container. The panel component 204 cansupport tool tips. Importation of new stencils can be further supportedbased on library hardware (e.g., extensible markup language (XML),etc.). An OEM can create a custom stencil with a custom shape. Inaddition, the ability to rename stencil and shape names can be enabled.Moreover, icons of shapes can be changed.

For example, a panel interface can include a stencil panel in list view.The stencil panel can include various sections (e.g., flow chart,sequential function chart, structure text, instruction list, functionblock diagram, ladder diagram, 61499, custom stencils, etc.) that can beexpanded to expose options related to such section (e.g., exposingshapes related to such sections, etc.). In addition, the stencil panelcan include tool tips and not display such shapes in a list view. Inanother example, the stencil panel can include custom library Cfunctions. In still another example, the stencil panel can includecustom stencil and custom items or shapes.

For example, XML can be received via a platform builder, whereinhardware definitions and features can be imported into a library. Fromsuch library, C function and function block can be imported into thestencil panel as a section including items and/or such shapes importedfrom the XML. In a particular example, a stencil builder (also referredto as the stencil editor component 202, which is discussed in moredetail below) can provide XML in which a definition can be imported tothe stencil panel and the body can be imported to a library. It is to beappreciated that importing is discussed in further detail in FIG. 4.

The document 206 can be an empty page that can be created by a user. Thedocument 206 can be a frame that basically supports HMI container andIEC containers that include IEC programming language. The document 206can support the following: single POU document that can support multiplelanguages; the POU document is a container referenced as, for instance,“MLGE Frame;” the POU document can support at least one of structuredtext (ST), instruction list (IL), ladder diagram (LD), function blockdiagram (FBD), sequential function chart (SFC), function chart (FC),61499, etc. For example, the document 206 can support six (6) differentcontainers for seven (7) languages (e.g., ST, IL, LD, FBD & custom & SFC& FC, 61499, HMI). Each can include specific rules for each (e.g.,graphical, textual). Moreover, the custom shape can be set in an FBDcontainer. The document 206 can support a container to be maximized orminimized. The document 206 can support the size of a container to beresized. The document 206 can further support at least two views of suchcontainers (e.g., full page, structured form, free form). The document206 can further support the following: a structured view in which ablank separator or new containers between existing containers can beinserted; a visual page border for printing; groupings of code to be setas a new shape; container execution order modification; containerexecution can be enabled and/or disabled; drag and drop, drag and dropcan be validated by CAM; zoom in; zoom out; and snap to grid forcontainers.

The stencil editor component 202 (also referred to as the stencilbuilder) can provide the following: creation of new stencils; creationof new shapes (e.g., shape to be dropped into the document 206, shapecan remain in tool box, etc.); define graphical properties of shape;define interface of the shape; associate new shape to existing functionand/or function block; support custom shape view and 61131 shape viewfor 61131 function, function block, C function, or C function block;support for configurable shape (e.g., user definition of number ofinputs and/or outputs, etc.); use of XML for description of shape; andshape to respect rules of input on the left side and output on the rightside. Moreover, it is to be appreciated that the following definitionscan be implemented for the stencil editor component 202:

TABLE 2 Other possible Term Definition definition Stencil Stencil is agroup of Stencil Shape Shape Object defined by method, Object debugproperties and interface Body Body of the shape is the Source Codesource code of the shape that will describe his behavior InterfaceDescription of rules to be Anchor, validate to connect to the Parametersshapes Graphical Properties Define the graphical characteristics thatcompose the Shape (Pixel, colors, default size . . . ) Debug PropertiesDefine the characteristics of the Shape during Debug (Color Change,animation . . . ) Vector graphics Define the properties of the image tonot be a simple image and will give a better render when zooming orresizing Configurable Shape Properties of Shape to be configure by theuser (Have 3 anchors instead of 2).

For example, the stencil builder can be a tool (e.g., a plug-in toabstract automation model, etc.) that can allow the creation of customshapes. For each shape, several aspects can be name of the shape, agraphical representation in a tool box, graphical representation inedition mode, graphical representation in debug or on line, interface(e.g., input and output of the function block), function or functionblock associated to the shape, data (e.g., data that can be used aslocal), graphical rules (e.g., anchors, parameters, etc.), extensibilityof parameters (e.g., some operator can be extended to the number ofparameters—example: addition of two numbers or six numbers), source codeof the shape in read only, hidden, or free.

The graphical representation can be implemented utilizing the graphicaleditor (e.g., the editor component 102). The editor can be implementedand/or acquired from a third-party. The graphical editor can allow thedefinition of a shape and the ability to select color and how an anchorcan be represented. The graphical editor can further define staticrepresentation and animated representation. Moreover, the graphicaleditor can allow the drawing of a complete shape using basic shapes(e.g., grouping existing shapes to create a more advanced object).

Upon defining a new shape, the editor component (not shown) candetermine anchors of that shape and what type of data it needs. It iscurrently assimilate to a function block where user will determine theparameter of the function block. In other words, the editor can beemployed (e.g., for parameter that function and function block).

FIG. 3 illustrates a system 300 that facilitates utilizing disparateindustrial programming languages to generate graphical files and/ortextured files. The system 300 can include the editor component 102 thatenables the combination of a plurality of programming languages in aseamless manner order to combine such portions of languages into anindustrial process. For example, the editor component 102 can enable twoor more programming languages within the document 206, wherein theprogramming languages can interact and/or communicate with one anotheras well as be associated with a particular industrial process. In system300, the document 206 is depicted with a first graphical language 302, atextural language 304, and a second graphical language 306. It is to beappreciated that any suitable number and/or combination of graphicallanguages and/or textual languages can be included and/or combinedwithin the document 206. Moreover, it is to be appreciated that theeditor component 102 enables the seamless interaction of the languagesas well as the sole inclusion of the languages within the document 206.

The document 206 can be employed to directly create a POU or a graphicalpage. It is to be appreciated that a blank page can be utilized and havethe possibility to save such blank page as a graphical page or a POU.When saved into a visualization page (e.g., graphical), no IEC containermay be present. Though, when saving into a POU, the graphical object maynot be part of the IEC code but mainly as graphical representation fordebugging. As depicted, when the document 206 is saved as a graphicalpage, the document 206 can be associated with an HMI (e.g., alsoreferred to as a IsaView file 308) file 308. Also depicted, when thedocument 206 is saved as a POU, the document 206 can be associated withan IEC61131/IEC61499 (e.g., also referred to as a CAM file 310) file310.

In another example, the document 206 can allow the creation of a new POUwithout any configuration or without any resource defined. For instance,the stencil panel can allow the defining of an application. The editorcomponent 206 can allow the creation of any POU with any language at anytime. From an empty page, the type of container can be decided. In anempty page, a shape can be dragged and the empty page (e.g., thedocument 206) can become a container for this particular language. Forexample, if a user is dragging a contact, the document can become amaximized LD container and will include automatically a ladder rung. Theeditor component 102 can further utilize a page border with the document206. The border of the page (e.g., the document 206) can be displayed.For example, a user can display the border to see the entire page andhow the POU is fitting within the boundaries.

FIG. 4 illustrates a system 400 that facilitates utilizing enablinguniversal and seamless importation of data from a plurality of disparatesources. The system 400 can include an import component 402 that canfacilitate the importation of data to create at least one of a shape, anobject, the mixed language object 106, or a portion of process thatincludes a combination of programming languages. In particular, theimport component 402 can allow the importation of shapes (e.g., ISaGRAFshapes, third-party shapes, etc.) into a stencil associated with theeditor component 102.

The import component 402 can allow the shapes to be implemented into astencil associated with the editor component 102. For example, the shapedefinition can be imported into the stencil. This definition can includethe name, graphics, and/or tool tips. The whole new object can beimported into a library. The whole object can be the complete new object(e.g., the body, the interface, the graphical properties, etc.).

FIG. 5 illustrates a system 500 that facilitates integrating utilizing auniversal model in accordance with the subject innovation. The system500 is a development platform that can employ generic programming modelsto enable developers to design control solutions in an abstract settingwhile facilitating code deployment and execution on substantially anytype of end hardware platform. In one aspect, an Abstract AutomationModel (AAM) 502 can be derived from common base model solutions orstandards such as IEC 61131 and 61499, for example. Although anyprogramming standard can be utilized for the underlying model, 61131 and61499 support a majority of automation languages in the world today. TheAAM 502 can define control structures that represent generic or abstractdata objects having properties of a configuration, resource, program,and so forth. The AAM 502 can define integrity rules that ensurestructural integrity such as a Tree structure (e.g., Parent to Child) orProject host configurations, which host resources, and so forth. Themodel also can define operations to update or query data. The AAM 502can allow control software design to occur transparently and outside ofthe particular revision or type of development software that isutilized.

As part of a larger framework or development environment, a ConcreteAutomation Model (CAM) 504 can provide data interfaces associated withthe generic data objects of the AAM 502 and according to a designatedproject format of differing development environments. For instance,various versions of a development program may have associated CAMs thatlink or map the respective versions to the underlying abstraction of theAAM 502. In another example, a particular hardware vendor may provide aCAM for a particular type of programming interface that is unique to therespective vendor. By providing the abstraction of the AAM 502 andmapping to any particular nuance of differing program environments viathe CAM, developers can rapidly add new features according to thegeneric programming model provided by the AAM 502 yet efficientlysupport and convert to substantially any available development program.The AAM 502 can receive program commands from a plurality of programmingversions 506 (e.g., ISaGRAF 1, 2, 3 . . . 6, RSLogix, etc.), where eachversion interfaces to the AAM 502 via an associated CAM 504. Plug-indevelopment support can be provided by in-house or third-partydevelopers by leveraging a plug-in interface 508 to increase thefunctionality of the AAM 502. Also, market applications (e.g., market510) can also be supported in the AAM 502 that are designed orpre-packaged for known industrial solutions. When a control solution hasbeen developed, this control solution (e.g., the AAM 502) can becompiled to run on substantially any control platform by leveraging adebug interface and field bus communication 512. The debug interface andfield bus communication 512 can enable various devices 104 to seamlessand universally interact with the AAM 502 regardless of the device type,make, model, location, etc. Moreover, it is to be appreciated that therecan be any suitable number of devices from device₁ to device_(M), whereM is a positive integer.

In general, the editor component 102 can allow the seamless interactionand creation of shapes (e.g., custom, existing, etc.) within a singleeditor, wherein the creation of shapes can be derived from a pluralityof programming languages. The editor component 102 can further enablethe universal interaction between such programming languages inconnection with the platform depicted in FIG. 5.

FIG. 6 illustrates a system 600 that employs intelligence to facilitateemploying two or more programming languages associated with a standardin order to generate a mixed language object. The system 600 can includethe editor component 102, the two or more languages 104, the mixedlanguage object or shape 106, and the interface 108 that can all besubstantially similar to respective components, languages, objects,shapes, and interfaces described in previous figures. The system 600further includes an intelligent component 602. The intelligent component602 can be utilized by the editor component 102 to facilitate utilizingtwo or more industrial programming languages in order to create anobject, a mixed language object, a portion of a process, and/or a shape.Moreover, the intelligent component 602 can be utilized with the editorcomponent 102 to facilitate combining IEC61131 standard language as wellas combining existing standard languages to create custom programminglanguages. For example, the intelligent component 602 can infer optimalprogramming languages to suggest based on code function, editor layout,import settings, user preferences, user tendencies, graphicalproperties, document settings, configuration settings, interactiontechniques between two or more languages, library settings, customlanguages based on user tendencies or use of existing languages, etc.

Moreover, the intelligent component 602 can facilitate utilizing aconsumption of a material and the status of such material to an operatorrole and/or position. For example, the intelligent component 602 caninfer the consumption of raw materials utilized in the production of aparticular industrial automation process and/or system. Such inferencecan be based at least in part upon historic data related to theconsumption of materials, status and/or supply of materials, etc.Moreover, such consumption and status of materials can be communicatedto an operator and/or the role of an operator.

It is to be understood that the intelligent component 602 can providefor reasoning about or infer states of the system, environment, and/oruser from a set of observations as captured via events and/or data.Inference can be employed to identify a specific context or action, orcan generate a probability distribution over states, for example. Theinference can be probabilistic—that is, the computation of a probabilitydistribution over states of interest based on a consideration of dataand events. Inference can also refer to techniques employed forcomposing higher-level events from a set of events and/or data. Suchinference results in the construction of new events or actions from aset of observed events and/or stored event data, whether or not theevents are correlated in close temporal proximity, and whether theevents and data come from one or several event and data sources. Variousclassification (explicitly and/or implicitly trained) schemes and/orsystems (e.g., support vector machines, neural networks, expert systems,Bayesian belief networks, fuzzy logic, data fusion engines . . . ) canbe employed in connection with performing automatic and/or inferredaction in connection with the claimed subject matter.

A classifier is a function that maps an input attribute vector, x=(x1,x2, x3, x4, xn), to a confidence that the input belongs to a class, thatis, f(x)=confidence(class). Such classification can employ aprobabilistic and/or statistical-based analysis (e.g., factoring intothe analysis utilities and costs) to prognose or infer an action that auser desires to be automatically performed. A support vector machine(SVM) is an example of a classifier that can be employed. The SVMoperates by finding a hypersurface in the space of possible inputs,which hypersurface attempts to split the triggering criteria from thenon-triggering events. Intuitively, this makes the classificationcorrect for testing data that is near, but not identical to trainingdata. Other directed and undirected model classification approachesinclude, e.g., naïve Bayes, Bayesian networks, decision trees, neuralnetworks, fuzzy logic models, and probabilistic classification modelsproviding different patterns of independence can be employed.Classification as used herein also is inclusive of statisticalregression that is utilized to develop models of priority.

A presentation component 604 can provide various types of userinterfaces to facilitate interaction between a user and any componentcoupled to the editor component 102. As depicted, the presentationcomponent 604 is a separate entity that can be utilized with the editorcomponent 102. However, it is to be appreciated that the presentationcomponent 604 and/or similar view components can be incorporated intothe editor component 102 and/or a stand-alone unit. The presentationcomponent 604 can provide one or more graphical user interfaces (GUIs),command line interfaces, and the like. For example, a GUI can berendered that provides a user with a region or means to load, import,read, etc., data, and can include a region to present the results ofsuch. These regions can comprise known text and/or graphic regionscomprising dialogue boxes, static controls, drop-down-menus, list boxes,pop-up menus, as edit controls, combo boxes, radio buttons, check boxes,push buttons, and graphic boxes. In addition, utilities to facilitatethe presentation such as vertical and/or horizontal scroll bars fornavigation and toolbar buttons to determine whether a region will beviewable can be employed. For example, the user can interact with one ormore of the components coupled to the editor component 102.

The user can also interact with the regions to select and provideinformation via various devices such as a mouse, a roller ball, akeypad, a keyboard, a pen and/or voice activation, for example.Typically, a mechanism such as a push button or the enter key on thekeyboard can be employed subsequent entering the information in order toinitiate the search. However, it is to be appreciated that the claimedsubject matter is not so limited. For example, merely highlighting acheck box can initiate information conveyance. In another example, acommand line interface can be employed. For example, the command lineinterface can prompt (e.g., via a text message on a display and an audiotone) the user for information via providing a text message. The usercan than provide suitable information, such as alpha-numeric inputcorresponding to an option provided in the interface prompt or an answerto a question posed in the prompt. It is to be appreciated that thecommand line interface can be employed in connection with a GUI and/orAPI. In addition, the command line interface can be employed inconnection with hardware (e.g., video cards) and/or displays (e.g.,black and white, and EGA) with limited graphic support, and/or lowbandwidth communication channels.

Referring to FIGS. 7-8, methodologies in accordance with various aspectsof the claimed subject matter are illustrated. While, for purposes ofsimplicity of explanation, the methodologies are shown and described asa series of acts, it is to be understood and appreciated that theclaimed subject matter is not limited by the order of acts, as some actsmay occur in different orders and/or concurrently with other acts fromthat shown and described herein. For example, those skilled in the artwill understand and appreciate that a methodology could alternatively berepresented as a series of interrelated states or events, such as in astate diagram. Moreover, not all illustrated acts may be required toimplement a methodology in accordance with the claimed subject matter.Additionally, it should be further appreciated that the methodologiesdisclosed hereinafter and throughout this specification are capable ofbeing stored on an article of manufacture to facilitate transporting andtransferring such methodologies to computers. The term article ofmanufacture, as used herein, is intended to encompass a computer programaccessible from any computer-readable device, carrier, or media.

FIG. 7 illustrates a methodology 700 for utilizing disparate industrialprogramming languages within a program in order to generate a portion ofan industrial process. At reference numeral 702, a first portion of datarelated to a first programming language associated with an IEC61131standard can be received. At reference numeral 704, a second portion ofdata related to a second programming language associated with theIEC61131. For example, the first programming language and/or the secondprogramming language can be, but is not limited to being, a ladderdiagram, a function block diagram, a structured text, an instructionlist, a sequential function chart, 61499, any suitable programminglanguage associated with a standard, any suitable programming languageassociated with an industrial process, etc. In general, the firstprogramming language and/or the second programming language can be agraphical language and/or a textual language.

At reference numeral 706, the first portion of data and the secondportion of data can be combined to construct a portion of a process. Inother words, the first programming language and the second programminglanguage can be mixed and/or combined together within a single compiler,editor, and the like in order to construct a portion of an industrialprocess and/or a portion of code. At reference numeral 708, the combinedfirst programming language and the second programming language can beutilized to create a custom library that can be employed to create aportion of a process. For example, a unique or custom combination of afirst programming language and a second programming language can beimplemented. Such custom combination can be utilized as a customlanguage and/or library of functions that can be employed to create codeand/or portions of a process.

FIG. 8 illustrates a methodology 800 that facilitates seamlessinteraction from a first industrial programming language and a secondindustrial programming language within an editor component. At referencenumeral 802, at least one graphical programming language and at leastone textual programming language can be employed within an editorapplication. It is to be appreciated that the textual programminglanguage and/or the graphical programming language can be associatedwith at least one of the IEC61131 standard or the 61499 standard.

At reference numeral 804, a combination of the graphical programminglanguage and the textual programming language can be allowed for thecreation of a portion of a process. In other words, within the editorapplication or software, the mixing of two disparate and uniqueprogramming languages can be provided in which such mixing can create aportion of a process or code. At reference numeral 806, a seamlessinteraction between the graphical programming language and the textualprogramming language can be provided to enable a universal processcompilation.

In order to provide additional context for implementing various aspectsof the claimed subject matter, FIGS. 9-10 and the following discussionis intended to provide a brief, general description of a suitablecomputing environment in which the various aspects of the subjectinnovation may be implemented. While the claimed subject matter has beendescribed above in the general context of computer-executableinstructions of a computer program that runs on a local computer and/orremote computer, those skilled in the art will recognize that thesubject innovation also may be implemented in combination with otherprogram modules. Generally, program modules include routines, programs,components, data structures, etc., that perform particular tasks and/orimplement particular abstract data types.

Moreover, those skilled in the art will appreciate that the inventivemethods may be practiced with other computer system configurations,including single-processor or multi-processor computer systems,minicomputers, mainframe computers, as well as personal computers,hand-held computing devices, microprocessor-based and/or programmableconsumer electronics, and the like, each of which may operativelycommunicate with one or more associated devices. The illustrated aspectsof the claimed subject matter may also be practiced in distributedcomputing environments where certain tasks are performed by remoteprocessing devices that are linked through a communications network.However, some, if not all, aspects of the subject innovation may bepracticed on stand-alone computers. In a distributed computingenvironment, program modules may be located in local and/or remotememory storage devices.

FIG. 9 is a schematic block diagram of a sample-computing environment900 with which the claimed subject matter can interact. The system 900includes one or more client(s) 910. The client(s) 910 can be hardwareand/or software (e.g., threads, processes, computing devices). Thesystem 900 also includes one or more server(s) 920. The server(s) 920can be hardware and/or software (e.g., threads, processes, computingdevices). The servers 920 can house threads to perform transformationsby employing the subject innovation, for example.

One possible communication between a client 910 and a server 920 can bein the form of a data packet adapted to be transmitted between two ormore computer processes. The system 900 includes a communicationframework 940 that can be employed to facilitate communications betweenthe client(s) 910 and the server(s) 920. The client(s) 910 are operablyconnected to one or more client data store(s) 950 that can be employedto store information local to the client(s) 910. Similarly, theserver(s) 920 are operably connected to one or more server data store(s)930 that can be employed to store information local to the servers 920.

With reference to FIG. 10, an exemplary environment 1000 forimplementing various aspects of the claimed subject matter includes acomputer 1012. The computer 1012 includes a processing unit 1014, asystem memory 1016, and a system bus 1018. The system bus 1018 couplessystem components including, but not limited to, the system memory 1016to the processing unit 1014. The processing unit 1014 can be any ofvarious available processors. Dual microprocessors and othermultiprocessor architectures also can be employed as the processing unit1014.

The system bus 1018 can be any of several types of bus structure(s)including the memory bus or memory controller, a peripheral bus orexternal bus, and/or a local bus using any variety of available busarchitectures including, but not limited to, Industrial StandardArchitecture (ISA), Micro-Channel Architecture (MSA), Extended ISA(EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB),Peripheral Component Interconnect (PCI), Card Bus, Universal Serial Bus(USB), Advanced Graphics Port (AGP), Personal Computer Memory CardInternational Association bus (PCMCIA), Firewire (IEEE 1394), and SmallComputer Systems Interface (SCSI).

The system memory 1016 includes volatile memory 1020 and nonvolatilememory 1022. The basic input/output system (BIOS), containing the basicroutines to transfer information between elements within the computer1012, such as during start-up, is stored in nonvolatile memory 1022. Byway of illustration, and not limitation, nonvolatile memory 1022 caninclude read only memory (ROM), programmable ROM (PROM), electricallyprogrammable ROM (EPROM), electrically erasable programmable ROM(EEPROM), or flash memory. Volatile memory 1020 includes random accessmemory (RAM), which acts as external cache memory. By way ofillustration and not limitation, RAM is available in many forms such asstatic RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), doubledata rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM(SLDRAM), Rambus direct RAM (RDRAM), direct Rambus dynamic RAM (DRDRAM),and Rambus dynamic RAM (RDRAM).

Computer 1012 also includes removable/non-removable,volatile/non-volatile computer storage media. FIG. 10 illustrates, forexample a disk storage 1024. Disk storage 1024 includes, but is notlimited to, devices like a magnetic disk drive, floppy disk drive, tapedrive, Jaz drive, Zip drive, LS-100 drive, flash memory card, or memorystick. In addition, disk storage 1024 can include storage mediaseparately or in combination with other storage media including, but notlimited to, an optical disk drive such as a compact disk ROM device(CD-ROM), CD recordable drive (CD-R Drive), CD rewritable drive (CD-RWDrive) or a digital versatile disk ROM drive (DVD-ROM). To facilitateconnection of the disk storage devices 1024 to the system bus 1018, aremovable or non-removable interface is typically used such as interface1026.

It is to be appreciated that FIG. 10 describes software that acts as anintermediary between users and the basic computer resources described inthe suitable operating environment 1000. Such software includes anoperating system 1028. Operating system 1028, which can be stored ondisk storage 1024, acts to control and allocate resources of thecomputer system 1012. System applications 1030 take advantage of themanagement of resources by operating system 1028 through program modules1032 and program data 1034 stored either in system memory 1016 or ondisk storage 1024. It is to be appreciated that the claimed subjectmatter can be implemented with various operating systems or combinationsof operating systems.

A user enters commands or information into the computer 1012 throughinput device(s) 1036. Input devices 1036 include, but are not limitedto, a pointing device such as a mouse, trackball, stylus, touch pad,keyboard, microphone, joystick, game pad, satellite dish, scanner, TVtuner card, digital camera, digital video camera, web camera, and thelike. These and other input devices connect to the processing unit 1014through the system bus 1018 via interface port(s) 1038. Interfaceport(s) 1038 include, for example, a serial port, a parallel port, agame port, and a universal serial bus (USB). Output device(s) 1040 usesome of the same type of ports as input device(s) 1036. Thus, forexample, a USB port may be used to provide input to computer 1012, andto output information from computer 1012 to an output device 1040.Output adapter 1042 is provided to illustrate that there are some outputdevices 1040 like monitors, speakers, and printers, among other outputdevices 1040, which require special adapters. The output adapters 1042include, by way of illustration and not limitation, video and soundcards that provide a means of connection between the output device 1040and the system bus 1018. It should be noted that other devices and/orsystems of devices provide both input and output capabilities such asremote computer(s) 1044.

Computer 1012 can operate in a networked environment using logicalconnections to one or more remote computers, such as remote computer(s)1044. The remote computer(s) 1044 can be a personal computer, a server,a router, a network PC, a workstation, a microprocessor based appliance,a peer device or other common network node and the like, and typicallyincludes many or all of the elements described relative to computer1012. For purposes of brevity, only a memory storage device 1046 isillustrated with remote computer(s) 1044. Remote computer(s) 1044 islogically connected to computer 1012 through a network interface 1048and then physically connected via communication connection 1050. Networkinterface 1048 encompasses wire and/or wireless communication networkssuch as local-area networks (LAN) and wide-area networks (WAN). LANtechnologies include Fiber Distributed Data Interface (FDDI), CopperDistributed Data Interface (CDDI), Ethernet, Token Ring and the like.WAN technologies include, but are not limited to, point-to-point links,circuit switching networks like Integrated Services Digital Networks(ISDN) and variations thereon, packet switching networks, and DigitalSubscriber Lines (DSL).

Communication connection(s) 1050 refers to the hardware/softwareemployed to connect the network interface 1048 to the bus 1018. Whilecommunication connection 1050 is shown for illustrative clarity insidecomputer 1012, it can also be external to computer 1012. Thehardware/software necessary for connection to the network interface 1048includes, for exemplary purposes only, internal and externaltechnologies such as, modems including regular telephone grade modems,cable modems and DSL modems, ISDN adapters, and Ethernet cards.

What has been described above includes examples of the subjectinnovation. It is, of course, not possible to describe every conceivablecombination of components or methodologies for purposes of describingthe claimed subject matter, but one of ordinary skill in the art mayrecognize that many further combinations and permutations of the subjectinnovation are possible. Accordingly, the claimed subject matter isintended to embrace all such alterations, modifications, and variationsthat fall within the spirit and scope of the appended claims.

In particular and in regard to the various functions performed by theabove described components, devices, circuits, systems and the like, theterms (including a reference to a “means”) used to describe suchcomponents are intended to correspond, unless otherwise indicated, toany component which performs the specified function of the describedcomponent (e.g., a functional equivalent), even though not structurallyequivalent to the disclosed structure, which performs the function inthe herein illustrated exemplary aspects of the claimed subject matter.In this regard, it will also be recognized that the innovation includesa system as well as a computer-readable medium havingcomputer-executable instructions for performing the acts and/or eventsof the various methods of the claimed subject matter.

In addition, while a particular feature of the subject innovation mayhave been disclosed with respect to only one of several implementations,such feature may be combined with one or more other features of theother implementations as may be desired and advantageous for any givenor particular application. Furthermore, to the extent that the terms“includes,” and “including” and variants thereof are used in either thedetailed description or the claims, these terms are intended to beinclusive in a manner similar to the term “comprising.”

What is claimed is:
 1. A method, comprising: inferring, by an editingdevice including a processor, a first industrial programming language ofa plurality of industrial programming languages to employ forprogramming an industrial controller and a second industrial programminglanguage of the plurality of industrial programming languages to employin combination with the first industrial programming language forprogramming the industrial controller to create a new programminglanguage that is optimal for programming the industrial controller basedupon at least one criteria comprising a code function to be implementedin the industrial controller, wherein the at least one criteria furthercomprises user tendencies associated with respective industrialprogramming languages of the industrial programming languages; andintegrating, by the editing device, at least a portion of the firstindustrial programming language with at least another portion of thesecond industrial programming language to produce the new programminglanguage for programming the industrial controller, wherein the firstindustrial programming language, the second industrial programminglanguage and the new programming language are different.
 2. The methodof claim 1, wherein at least one of the first industrial programminglanguage, the second industrial programming language, or the thirdprogramming language is at least one of a structured text (ST), aninstruction list (IL), a ladder diagram (LD), a function block diagram(FBD), a sequential function chart (SFC), a function chart (FC), C, orC++.
 3. The method of claim 1, wherein at least one of the firstindustrial programming language or the second industrial programminglanguage relates to an IEC61131 standard.
 4. The method of claim 1,wherein at least one of the first industrial programming language or thesecond industrial programming language relates to an IEC61499 standard.5. The method of claim 1, wherein the at least one criteria furthercomprises interaction techniques between respective industrialprogramming languages of the industrial programming languages.
 6. Themethod of claim 1, wherein the first industrial programming language isa textual programming language and the second industrial programminglanguage is a graphical programming language.
 7. A system, comprising: amemory, communicatively coupled to a processor, the memory storing thecomputer-executable components comprising: an editor componentconfigured to: infer a first industrial programming language of aplurality of industrial programming languages to utilize for programmingan industrial controller and infer a second industrial programminglanguage of the plurality of industrial programming languages to utilizein combination with the first industrial programming language forprogramming the industrial controller to create a custom programminglanguage that is optimal for programming the industrial controller basedupon at least one criteria comprising a code function to be implementedin the industrial controller, wherein the at least one criteria furthercomprises user tendencies associated with respective industrialprogramming languages of the industrial programming languages; andcombine at least a portion of the first industrial programming languagewith at least another portion of the second industrial programminglanguage to create the custom programming language for programming theindustrial controller, wherein the first industrial programminglanguage, the industrial second programming language and the customprogramming language are disparate.
 8. The system of claim 7, wherein atleast one of the first industrial programming language, the secondindustrial programming language, or the custom programming language isat least one of a structured text (ST), an instruction list (IL), aladder diagram (LD), a function block diagram (FBD), a sequentialfunction chart (SFC), a function chart (FC), C, or C++.
 9. The system ofclaim 7, wherein at least one of the first industrial programminglanguage or the industrial second programming language relates to anIEC61131 standard.
 10. The system of claim 7, wherein at least one ofthe first industrial programming language or the second industrialprogramming language relates to an IEC61499 standard.
 11. The system ofclaim 7, wherein the at least one criteria further comprises interactiontechniques between respective industrial programming languages of theindustrial programming languages.
 12. The system of claim 7, wherein thefirst industrial programming language is a textual programming languageand the second industrial programming language is a graphicalprogramming language.
 13. The system of claim 7, wherein the at leastone criteria further comprises graphical properties of respectiveindustrial programming languages of the industrial programminglanguages.
 14. A non-transitory computer-readable medium havinginstructions stored thereon that, in response to execution, cause asystem including a processor to perform operations comprising: inferringa first industrial programming language of a plurality of industrialprogramming languages to use for programming an industrial controllerand a second industrial programming language of the plurality ofindustrial programming languages to use in combination with the firstindustrial programming language for programming the industrialcontroller to create a custom programming language that is optimal forprogramming the industrial controller based upon at least one criteriacomprising a code function to be implemented in the industrialcontroller, wherein the at least one criteria further comprises usertendencies associated with respective industrial programming languagesof the industrial programming languages; and merging at least a portionof the first industrial programming language for programming with atleast another portion of the second industrial programming language toform the custom programming language for programming the industrialcontroller, wherein the first industrial programming language, thesecond industrial programming language and the custom programminglanguage are not identical.
 15. The non-transitory computer-readablemedium of claim 14, wherein at least one of the first industrialprogramming language, the second industrial programming language, or thethird programming language is at least one of a structured text (ST), aninstruction list (IL), a ladder diagram (LD), a function block diagram(FBD), a sequential function chart (SFC), a function chart (FC), C, orC++.
 16. The non-transitory computer-readable medium of claim 14,wherein the at least one criteria further comprises interactiontechniques between respective industrial programming languages of theindustrial programming languages.
 17. The non-transitorycomputer-readable medium of claim 14, wherein the first industrialprogramming language is a textual programming language and the secondindustrial programming language is a graphical programming language. 18.A system, comprising: a memory, communicatively coupled to a processor,the memory storing the computer-executable components comprising: aneditor component configured to: infer a first industrial programminglanguage of a plurality of industrial programming languages to utilizefor programming an industrial controller and infer a second industrialprogramming language of the plurality of industrial programminglanguages to utilize in combination with the first industrialprogramming language for programming the industrial controller to createa custom programming language that is optimal for programming theindustrial controller based upon at least one criteria comprising a codefunction to be implemented in the industrial controller, wherein the atleast one criteria further comprises interaction techniques betweenrespective industrial programming languages of the industrialprogramming languages; and combine at least a portion of the firstindustrial programming language with at least another portion of thesecond industrial programming language to create the custom programminglanguage for programming the industrial controller, wherein the firstindustrial programming language, the industrial second programminglanguage and the custom programming language are disparate.
 19. Thesystem of claim 18, wherein the at least one criteria further comprisesuser tendencies associated with respective industrial programminglanguages of the industrial programming languages.
 20. The system ofclaim 18, wherein the at least one criteria further comprises graphicalproperties of respective industrial programming languages of theindustrial programming languages.
 21. A system, comprising: a memory,communicatively coupled to a processor, the memory storing thecomputer-executable components comprising: an editor componentconfigured to: infer a first industrial programming language of aplurality of industrial programming languages to utilize for programmingan industrial controller and infer a second industrial programminglanguage of the plurality of industrial programming languages to utilizein combination with the first industrial programming language forprogramming the industrial controller to create a custom programminglanguage that is optimal for programming the industrial controller basedupon at least one criteria comprising a code function to be implementedin the industrial controller, wherein the at least one criteria furthercomprises graphical properties of respective industrial programminglanguages of the industrial programming languages; and combine at leasta portion of the first industrial programming language with at leastanother portion of the second industrial programming language to createthe custom programming language for programming the industrialcontroller, wherein the first industrial programming language, theindustrial second programming language and the custom programminglanguage are disparate.
 22. The system of claim 21, wherein the at leastone criteria further comprises interaction techniques between respectiveindustrial programming languages of the industrial programminglanguages.